\subsection{TAD \tadNombre{Matriz($ \alpha $)}}
\begin{tad}{\tadNombre{Matriz($ \alpha $)}}
\tadGeneros{matriz($ \alpha $)}
\tadUsa{\tadNombre{Nat, Bool}}
\tadIgualdadObservacional{m1}{m2}{matriz($ \alpha $)}{$ ( ancho(m1) \igobs ancho(m2) \wedge alto(m1) \igobs alto(m2) ) \yluego \forall i,j : Nat ( 1 \leq i \leq alto(m1) \wedge 1 \leq j \leq ancho (m1) \impluego obtener(m1, i, j) \igobs obtener(m2,i,j)  $ }
\tadAlinearFunciones{\argumento $\implies$ \argumento}{bool,bool}
\tadAlinearFunciones{Avanzarasdasda}{aasddasdasdsdssdasdasitListaOrd($\alpha$) /it }

\tadObservadores
\tadOperacion{Filas}{Matriz($ \alpha $)}{Nat}{}
\tadOperacion{Columnas}{Matriz($ \alpha $)}{Nat}{}
\tadOperacion{Obtener}{Matriz($ \alpha $) \ m, Nat \ f, Nat \ c }{Nat}{$ 1 \leq f \leq alto(m) \wedge 1 \leq c \leq ancho(m) $}

\tadGeneradores

\tadOperacion{nueva}{Nat \ h, Nat \ w, Nat \ init}{Matriz($ \alpha $)}{}
\tadOperacion{definir}{Matriz($ \alpha $) \ m, Nat \ f, Nat \ c, x \ Sig }{Matriz($ \alpha $)}{$ 1 \leq f \leq alto(m) \wedge 1 \leq c \leq ancho(m)$}

\tadOtrasOperaciones

\tadOperacion{Fila}{Matriz($ \alpha $) \ m, Nat \ f}{Secu($ \alpha $)}{$ 1 \leq f \leq alto(m)$}
\tadOperacion{Columna}{Matriz($ \alpha $) \ m, Nat \ c }{Secu($ \alpha $)}{$ 1 \leq f \leq alto(m)$}


\tadAxiomas[]

\tadAxioma{Ancho(nueva(h, w, init))}{\IF h \igobs 0 THEN 0 ELSE w FI}
\tadAxioma{Ancho(definir(m,f,c,x)}{Ancho(m)}
\tadAxioma{Alto(nueva(h, w, init))}{h}
\tadAxioma{Alto(definir(m,f,c,x)}{Alto(m)}
\tadAxioma{obtener(nueva(h, w, init)), f, c}{init}
\tadAxioma{obtener(definir(m,f,c,x)), f2, c2}{\IF (f \igobs f2) $\wedge$ (c \igobs c2) THEN x ELSE obtener(m, f2, c2) FI}
\tadAxioma{Fila(m,f)}{FilaAux(m,f,1)}
\tadAxioma{FilaAux(m,f,i)}{\IF i \igobs ancho(m)+1 THEN <> ELSE obtener(m,f,i) \puntito FilaAux(m,f,i+1) FI}
\tadAxioma{Columna(m,c)}{ColumnaAux(m,c,1)}
\tadAxioma{ColumnaAux(m,c,i)}{\IF i \igobs alto(m)+1 THEN <> ELSE obtener(m,c,i) \puntito FilaAux(m,c,i+1) FI}

\end{tad}